#ifndef EMPLOYEE_H
#define EMPLOYEE_H

#include "rational.h"

/**
 * This class is an employee, which has an ID number, the company number which
 * he works for and his salary
 */
class Employee
{
public:
	/**
	 * Constructor: set the private variables according to the input
	 */
	Employee(int id, int compId, const rational::Rational& salary);

public:
	/**
	 * This function gets the ID number of a certain employee
	 * \remarks Complexity is O(1)
	 */
	int GetId() const;

	/**
	 * This function gets the company number of a certain employee
	 * \remarks Complexity is O(1)
	 */
	int GetEmployer() const;

	/**
	 * This function sets the company number which he works for
	 * \param The company number
	 * \remarks Complexity is O(1)
	 */
	void SetEmployer(int emp);

	/**
	 * This function gets the salary of a the employee
	 * \remarks Complexity is O(1)
	 */
	rational::Rational GetSalary() const;

	/**
	 * This function sets the salary for the employee
	 * \param The company number
	 * \remarks Complexity is O(1)
	 */
	void SetSalary(const rational::Rational& salary);

private:
	int _Id;
	int _CompanyId;
	rational::Rational _salary;
};

#endif // EMPLOYEE_H
